package inge_soft.gestoriusNuevo.business.controller.validation;

import java.util.Map;

import org.zkoss.bind.Property;
import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.validator.AbstractValidator;

public class ValidadorUsuario extends AbstractValidator {

	public void validate(ValidationContext ctx) {
		Map<String, Property> beanProps = ctx.getProperties(ctx.getProperty().getBase());
		
		// por ahora valida NOMBRE y APELLIDO, QUE NO ESTEN VACIOS NI EN NULL
		validarVacios(ctx, 
				(String) beanProps.get("nombre").getValue(),
				(String) beanProps.get("apellido").getValue(),
				(String) beanProps.get("mail").getValue(),
				(String) beanProps.get("documento").getValue()
				);
		
		validarMail(ctx, (String) beanProps.get("mail").getValue());
	}
	
	private void validarVacios(ValidationContext ctx, String nombre, String apellido, String mail, String documento) {
		if (
			!validarString(nombre) ||
			!validarString(apellido) || 
			!validarString(mail) || 
			!validarString(documento)
			) {
			
			this.addInvalidMessage(ctx, "nombre","Se deben ingresar todos los campos obligatorios [*]");
		}
	}
	
	private void validarMail(ValidationContext ctx, String mail) {
		if(mail == null || !mail.matches(".+@.+\\.[a-z]+")) {
			this.addInvalidMessage(ctx, "mail","Ingrese un mail valido");
		}
	}
	
	private boolean validarString(String cadena) {
		if (cadena == null) {
			return false;
		}
		if (cadena.isEmpty()) {
			return false;
		}
		return true;
	}

}
